iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Software Development

Rails 開發,每日一套件介紹! 系列 第 6

Day 6: 開發中的金鑰管理者 - dotenv-rails

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
Rails 開發,每日一套件第6天,跟著我一起走完這段旅程,您也能建立出自己的常用套件庫。
讓我們循序漸進,輕鬆認識 Rails 開發好用的 30 個套件吧!

Day 6: dotenv-rails

今天要介紹的必裝套件,dotenv-rails。是一個一直覺得好像沒什麼好說的,但真的講起來,其實要先解釋一些背景的小套件。在介紹這個套件之前,應該要先講什麼是.env,然後也需要有對於軟體發開環境的知識理解才行。

.env 是一個專門存放環境變數(Environment Variables)的檔案,通常會將一些重要的資料,如金鑰、帳號、密碼、系統或程式設定等,再配合把 .env 放入 gitignore 內,可以避免將重要資料加入版控內(非常重要,務必要放入gitignore)。實務上也會利用環境變數來區分 development 環境 及 production 環境。

而這個 .env 並不是 rails 專用的檔案,在多種程式語言、或軟體中都很常見。而 dotenv-rails 則是專為了 rails 打造的套件,其他還有例如像 dotenv、python-dotenv 等,分別在 node.js 或 python 中使用。

安裝方式

首先,一樣的先 bundle add 一下。

bundle add dotenv-rails

並且確認這個 gem 在 groups: [:development, :test] 中。
接著在 config/application.rb 中,Bundler.require(*Rails.groups) 底下寫入。

if ['development', 'test'].include? ENV['RAILS_ENV']
  Dotenv::Railtie.load
end

接著就可以開始使用了~
好比說你的資料庫設定 database.yml 中,db 的 username、password 等等,任何你覺得重要的資訊,都可以用一個 env 的方式來儲存,並避免進入版控!並避免進入版控!並避免進入版控! (很重要講三次)
範例如下:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  host: localhost
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>

於是你就可以在專案資料夾中,創建一個.env檔,並且在檔案中寫入:

DB_USERNAME: username 真正的使用者帳戶
DB_PASSWORD: password 真正的使用者密碼

走到這裡,大致就完成了。
另外提供一些小撇步,在團隊工作中,為了要你的同伴知道有什麼樣的金鑰,也可以創建一個叫做 .env.sample 的檔案。這裡面不會寫入真的金鑰,而只是提醒同伴甚至自己,目前專案中有什麼金鑰。格式跟.env 大同小異,只是後方不會寫入真的資訊。

另外,如果在開發中,你想要查詢某個金鑰是什麼。又懶得切回.env 看,可以透過 rails console 來查詢:

rails c
> ENV["DB_USERNAME"]
> username
>ENV["DB_PASSWORD"]
> password
>

以上。
總之,dotenv 在任何專案中,絕對都是必裝套件之一,別忘了加入你的收藏吧!
我們明天再見!


上一篇
Day 5: 你的站內圖書館員 - ransack
下一篇
Day 7: 一步到位,分頁全能王 - Pagy
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言